package com.example;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author loubobooo
 * @Description #151. 翻转字符串里的单词
 * @Date 2022/2/24
 */
public class ReverseWordsInAString {

    /**
     * 方法描述:给你一个字符串 s ，逐个翻转字符串中的所有 单词 。
     * 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
     * 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。
     *
     * 说明：
     * 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。
     * 翻转后单词间应当仅用一个空格分隔。
     * 翻转后的字符串中不应包含额外的空格。
     * 示例 1：
     *
     * 输入：s = "the sky is blue"
     * 输出："blue is sky the
     * @param: [s]
     * @return: java.lang.String
     * @author: loubobooo
     * @date: 2022/2/24
     */
    public String reverseWords(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        StringBuilder stringBuilder = new StringBuilder();
        // 用trim解决两端空格，用split的正则表达式" +"去除多余空格来做分割
        String[] split = s.trim().split(" +");
        for (int i = split.length - 1; i >= 0; i--) {
            stringBuilder.append(split[i]).append(" ");
        }
        String result = stringBuilder.toString();
        return result.substring(0, result.length() - 1);
    }


    public static int singleNumber(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if(map.containsKey(nums[i])){
                map.put(nums[i], map.get(nums[i]) + 1);
            }else{
                map.put(nums[i], 1);
            }
        }
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if(entry.getValue() == 1){
                return entry.getKey();
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        singleNumber(new int[]{2,2,3,2});
    }
}
